The present invention relates generally to computer processing, and more particularly to techniques for supporting user navigation in a browser environment.
The World Wide Web, commonly known as the Internet, has made it possible for users to access information stored all over the world from their individual computers. The information on the Web is typically stored as webpages (or simply, pages), each of which is associated with a unique address referred to as a Universal Resource Locator (URL). The content of each page is typically represented using a particular editing language such as the commonly used HyperText Mark-up Language (HTML).
A browser is a software program used to facilitate the retrieval and rendering of information from the Web. The browser receives (e.g., from a user) a URL for a particular page, sends the URL to the appropriate web server, downloads the page sent by the web server, and renders the downloaded page. Commonly available browsers include Navigator™ from AOL-Time Warner, Inc. and Internet Explorer™ from Microsoft Corporation, both of which are commercially available.
To enhance user experience and reduce unnecessary data accesses to the web servers, a downloaded page is typically stored in a local memory (e.g., a cache) in the client computer and the page's URL is stored to a history stack maintained by the browser. The browser typically maintains a particular number of the most recently retrieved pages in the local memory for quick retrieval, if requested again by the user. Since a user typically navigates from page to page in search for the desired information, the history stack and the stored pages allow the user to quickly navigate backward and forward through pages that have been previously retrieved and stored. If a particular desired page is already stored in the local memory, then the stored page can be quickly retrieved and displayed by the browser. Otherwise, the desired page would need to be retrieved again from the web server and displayed.
Each page may include one or more “frames”, each of which may include any combination of user interface (UI) elements, descriptors, and data. The data in a particular frame may be dependent on the data and/or other content in one or more other frames on the same page. As an example, for a configuration-type application, the data in a first frame of a page may be used by a second frame to determine whether or not a particular configuration formed with the data in the first frame is valid. In this case, the specific order in which the frames are loaded is important, and the first frame should be loaded before the second frame to ensure that the proper configuration result is provided. If the second frame is somehow loaded before the first frame, then the configuration result may be incorrect.
Typically, the frames of a page may be loaded “programmatically” in a particular desired order the first time the page is loaded. The loading order of the frames is typically not controllable for each subsequent reload of the page, since a conventional browser typically loads the frames in an unspecified order. The inability to control the loading order of the frames in the page is generally acceptable for an “independent” page where each frame is not dependent on any other frames and their particular loading order is not important. However, for a “dependent” page, loading order of the page's frames may be important to obtain the proper result. The dependent pages previously loaded at a client computer may thus not be properly loaded by the browser, for example, in response to the user navigating forward and backward between these pages.
Thus, techniques that can be used to support user interaction in a browser environment and to provide the proper results for dependent pages are highly desirable.